23

» WarCraft 3 / Физический размер декораций

Похожие вопросы:

ответ
Кароче берешь декорацию и ставишь на земю и смотриш, какое пространство карты путей она блокирует, Можно взять несколько, создаешь новые декорации на основе блокираторов пути, но текстуры пути у них удаляешь, втыкаешь их на нужные места, сохраняешь карту, после берешь и редактируешь эти самые декорации устанавливая им нужную текстуру пути, как у тех декораций которые подходят по размеру чтобы заткнуть дыру.

23

» WarCraft 3 / Создание телепортов через способность.

Похожие вопросы:

ответ
Огненную стрелу нельзя спамить, в отличие от обычных спелов со снарядами.

Я для снарядов использовал Death Coil. Заменил захаркоденный эффект попадания, импортировав пустой файл по пути этого эффекта. Работать этот способ будет, если на карте нет юнитов с классификацией Нежить. И если не надо кастовать в своих (хотя это можно попытаться обойти временной выдачей классификации Нежить, я не проверял).

Есть ещё Acid Bomb, но эта способность накладывает бафф. До 1.31 (или 1.30) это будет сбивать все аналогичные баффы.

23

» WarCraft 3 / Скорость поворота юнита

Похожие вопросы:

ответ
ответ
У меня кончились мыслИ. Привязку к точкам всё что могу тут предложить, а жаль...

ХОТЯ знаешь чё - осенило меня тут - создавай на позиции здания дамик с картой пути в виде буквы О. То есть само здание как бы без текстуры пути, а его огораживает дами с кольцевой текстурой. Таким образом здание никуда не убежит, зато сможет поворачиваться!

Прикрепляю пример. Только себе текстурку поплотнее сделай
ответ
У тебя дистанция камеры разная, вот и кажется что разница.
Дома можно делать и с помощью разрушаемых объектов, чтобы не так нагружать игру, необходимые события триггеров есть и разрушаемых объектов.
ответ
фиксировать угол при применении и постоянно выравнивать юнита при периодической проверке
если ставить скорость поворота 0 - у юнита начнутся проблемы с движением
ответ
Но потребуется редактировать чуть чуть модель

23

» WarCraft 3 / Как восстановить поврежденную карту?

Похожие вопросы:

ответ
Ну там же есть у ладика тула, автопоиск имен во время игры, когда ты играешь, все что грузит игра - попадает в файллист.

23

» WarCraft 3 / Сами удаляются модели на карте

Похожие вопросы:

ответ
Хорошо, раз ты требуешь, то я точно отвечу: нет.
ответ
Viktor2, а ты реально импортировал все текстуры (в кол-ве 21шт ) в карту? Если хотя бы одну забыл -модель не будет отображаться.
ответ
Maniac_91:
Если без триггеров делать, то можно открыть через War3ModelEditor стандартную модель огня и посмотреть, как там устроен источник звука. Потом открыть свою модель и создать в ней такой же источник звука, не забыв настроить время срабатывания.
Хорошо, без триггеров пусть... Я открывал стандартную модель огня, там вообще нету прицепки звука, потому что в доступных звуках в прицепки нету звука огня. Стандартные звуки все на тему заклинаний, но нету звуков окружения, и нету даже похожего звука бушующего огня! Видимо те стандартные модели огня имеют внешнюю прицепку звука, но не в себе. Я бы не спрашивал если бы проблема не была такой слишком сложной. Не люблю зря беспокоить людей.
ответ
В мпк редакторе открой карту да удали модель, вот и все.
ответ
Adantarn, запускай редактор в совместимости с Windows 7. Ещё перезагрузи компьютер (именно перезагрузи, а не выключи и включи).
Также дело может быть в настройках графики. Выкрути их в игре на максимум или в редакторе, убрал галку "Использовать настройки игры" и поставив свою конфигурацию.
Если всё это не поможет, то удаляй всех юнитов и расставляй их уже на новом компьютере.

23

» WarCraft 3 / Тригери

Похожие вопросы:

ответ
~8gabriel8:
Как уже заметил, юнит на паузе.
Далее условие не срабатывает, потому что start не равно 1.

Заморочился и переделал тебе триггеры)
ответ
PT153:
Вылетает игра или редактор?
Редактор, обновился до 1.31 все начало нормально работать. По ходу реал проблема в 1.29. У меня вылетал редактор когда пытался просто зайти в меню улучшений и что то выбрать.
Steal nerves:
событие какое? мб это вылетает из-за того что пытаешься удалить исследуемого юнита? "исследуемый юнит" - так понимаю, это юнит который завершает исследование, но ты пытаешься удалить его?
еще проверь не приводят ли замена бнитов к фаталу, особенно здания. больше пока не вижу на скрине ничего такого
Разобрался уже простой обновой до 1.31 :D Он меня даже не пускал в меню улучшений в редакторе, сразу вылеты были.
ответ
никак
ответ
Sexua1, никак на гуи не обойти, запомни у тебя есть лишь GetEventDamage() (Damage taken), источник и цель. Отличать тип урона нельзя, нет таких функций, есть ухищрения - вручить юниту пассивку рунных браслетов с резистом 200%, тогда весь магический урон станет отрицательным, таким образом можно отличить урон от атаки (условно, слеш атаки и мины течиса это не отфильтрует) ибо положительный урон физический, отрецаиельный - магический, но чтобы убрать эффект лечения от маг урона, придется ставить таймер на 0.00 сек, снижать хп, а после удалять пассивку и наносить маг урон от лица юнита еще раз, потом снова вручать пассивку, сделав еще переменную для исключения рекурсии.
ответ
это бред полный, уже миллион раз форсили эту тему

если ты выставляешь дамми не разлагается и не оживляется всё - после смерти он сразу же удаляется из игры, а этот триггер юзлесс и лишь портит качество способностей, потому что когда юнит умирает он хотя бы анимацию ещё проигрывает, частицы ещё разлетаются, а при мгновенном удалении юнита это выглядит отвратительно

сорян конечно если чью-то религию подпортил, но меня раздражает когда вижу подобную фигню

сам же триггер по факту лишняя нагрузка, если бы тут была подчистка хэша под родительским ключом юнита или что-то в этом духе - я бы ещё понял, но обычное удаление когда можно выставить время смерти на 0.00...

23

» WarCraft 3 / Вопрос по переменным

Похожие вопросы:

ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
Wyett, ты можешь добавлять подобные этим:
function ... takes ... returns ...
Код
endfunction
Резака купить можно, но это будет абсолютно не похоже на покупку дирижабля.
ответ
~8gabriel8:
У меня просто пример работы функции, будет по слову лотерея в подстроке определять длину этой строки, отделять функцией число и переводить его в целочисленное.
В большом паке наработок есть Substring - titul to player.w3x, но может и что-то ещё, потому что это тоже не совсем то, что автору нужно.
ответ
Ответ выше - для стандартного редактора WE. Однако, рекомендуется использовать с Lua внешний редактор кода и внешний же сборщик карты. Это чревато маленьким неудобством в виде необходимости запускать карту на проверку только из внешней программы т.к. запуск из WE будет без значительной части кода в карте, но дает огромное преимущество в виде несравнимо более удобной работы с кодом.
К сожалению, пока слишком мало информации об этом на сайте.
Вариант NazarPunk, пока без сборки карты, код придется копировать в карту вручную.

Мой вариант, пока не рабочий т.к. перед релизом нужно исправить несколько багов, но включает в себя и работу с кодом и сборку карты, не нужно вручную копировать код в карту.
Даже здесь на сайте есть еще пара вариантов, но мне лень их искать
И немного саморекламы, как выглядели бы ответы на вопрос выше при использовании моего тулсета
  1. Использовать макрос RAW('A0E5'), который превратит равкод в число при сборке карты.
  2. Инжект в функцию main, с заменой оригинальной функции main на свою и вызовом оригинальной функции изнутри нашей.
  3. Аналогично ответу на этот вопрос для чистого WE, но без объявления переменных в WE т.к. то уже не так удобно становится когда код во внешнем редакторе.

Теперь о точках входа и инжекте.
Луа позволяет делать такой финт ушами
do
  local f = FunctionName -- записываем функцию в переменную
  function FunctionName() -- заменяем оригинальную функцию своей
   f() -- вызываем оригинальную функцию из переменной
   -- здесь могла быть ваша реклама или ваш код
  end
end
Это позволит нам сохранить оригинальную функцию в переменную, заменить оригинал своей функцией и вызвать оригинал из переменной. Применимо к любой функции, которая была объявлена раньше, не работает если функция объявлена после выполнения этого кода. Для создания точки входа отлично подходит InitGlobals, она всегда объявляется раньше кастомного кода в WE и вызывается из main.

У себя в коде я пользуюсь немного более сложным способом, этот код не будет работать в WE т.к. цепляет main, а не InitGlobals и не дает серьеных преимуществ перед описаным выше, привожу просто для расширения кругозора
local function InjectMain()
    local alpha_main = main
    return function()
        local alpha_init = RunInitializationTriggers
        RunInitializationTriggers = function() end
        alpha_main()
        InitLibraries() --моя функция, которая должна быть выполнена после всего, но до триггеров инициализации карты
        alpha_init()
    end
end
main = InjectMain()
ответ
Можно, зачем они тебе на карте вообще

23

» WarCraft 3 / Замена атаки на способность

Похожие вопросы:

ответ
Ancient:
dave_wwid, на событии Юнит Атакован возможны баги и утечки. Не лучше ли на событии получает урон?
Я думаю, что вы правы...
Yuru13, вам следует выбрать событие Specific Unit Event, а в нём Получает урон (Damage taken), и создать глобальную переменную для критующего. Далее следует конвертировать триггер в текст и заменить место под Юнита в событии на некую глобальную переменную(Таковую создать через другой триггер типа Событие: Юнит атакован Условие: Атакующий = глобальной переменной атакующий Действие: присвоить свободной глобальной переменной значение атакованный юнит). Также вам пригодится Dmage Source (пишется кое-где вместо triggering unit). Damage source - это тот, кто нанёс урон. В условии пишем, чтобы Damage source соответствовал переменной.(Ну а в переменную его можно засунуть при инициализации карты, или вовсе не сувать, если он будет на карте изначально). Действия же добавляете ваши.
P.S. Конвертированием триггера лучше заняться после добавленных действий. И помните, что Нужно как минимум 2 глобальные переменные типа юнит и 2 триггера.
Недостатки способа
Данный способ будет работать только если у вас на карте одни юнит, имеющий криты с кулдауном, и если этот юнит атакует за раз одну цель... В противном случае придётся создавть локальные переменные вместо глобальных, и в одном триггере. Или же созданные переменные отметить как массивы и создать счётчик для этих переменных (Но и в таком случае не без багов и т.п.)
ответ
Ну решается всё довольно тривиально
Юнит атакован
приказ атакующего юнита не равен "атаковать"
б.е. - приказать атакующий ПКМ атакованного
При первой атаке произойдёт небольшая потеря времени, т.к. получив при каз юнит заново начнёт анимацию атаки. Зато орб будет прокать.
Алсо если приказать юниту перейти нападая на противников (триггерно или ручками) - приказ юнита будет какой-надо и орб будет срабатывать.

23

» WarCraft 3 / Подчинение

Похожие вопросы:

ответ
WiLian, так я имел в виду два триггера..
Вот так: xgm.guru/files/100/198847/comments/366316/Give.w3m
Скопируй 2 триггера и переменную-массив юнитов Selected в свою карту.
Тут даже без проверки получается вроде.
Если нужно больше игроков, чем 4 - то добавляй события с ними.
Sergey105, а как это в один триггер впихнуть?
ответ
Воскрешает моба из которого выпала эта руна в качестве лута.
ответ
1 - очень просто, запомнил номер владельца в переменную при касте, через нужное время возвращаешь бывшего
2 - тоже очень просто, делаешь заклинание на основе пустышки в области, можно на основе канала, триггерно выделяешь всех врагов вокруг точки каста и меняешь им владельца с нужным графическим эффектом
ответ
~8gabriel8:
Открываешь редактор объектов на вкладке Предметы и находишь руну, нажимаешь Ctrl+D, станут видны все рав-коды.

23

» WarCraft 3 / Перенос ландшафта

Похожие вопросы:

ответ
Судя по скрину, это версия 1.26. Для проверки кода подойдёт программа UnrealJassSpy www.hiveworkshop.com/threads/unreal-jass-spy-1-26a.244384
Кидаешь её файлы в папку с игрой, запускаещь игру, ждешь внедрения (жмешь ок), запускаешь карту. Потом в логах JassSpy.txt смотришь на каком месте у тебя прервалась игра.

23

» WarCraft 3 / Dummy unit

Похожие вопросы:

ответ
По коду честно говоря ничего не понятно. Но в отлове урона это обычная ошибка, когда урон наносится внутри триггера, отлавливающего урон или если он вызывает действия которые наносят урон и снова вызывают этот триггер. Бесконечная рекурсия в общем роняет игру.
ответ
Где код таймера который должен двигать снаряд?
ответ
map_maiker, какой то глупый код, у тебя если нет аргумента dummy - то идет обрыв потока, ибо обращение к пустой переменной.
	function DummyTargetCast takes unit cast, unit targ, integer spellid, integer order returns nothing
    	local unit dummy = CreateUnit( GetOwningPlayer(cast), 'hdum', GetUnitX(targ), GetUnitY(targ), bj_UNIT_FACING )
		call SetUnitPathint( dummy, false )
		call UnitAddAbility( dummy, spellid )
		call UnitApplyTimedLife( dummy, 'BTLF', 5.00 )
		call UnitShareVision( targ, GetOwningPlayer(cast). true )
		call IssueTargetOrder( dummy, order, targ )
		call UnitShareVision( targ, GetOwningPlayer(cast). false )
		set dummy = null
	endfunction
	// пример использования
	call DummyTargetCast( GetSpellAbiliutyUniut(), GetSpellTargetUnit(), 'Ahtb', OrderId("thunderbolt"))

Код не универсальный, да и вовсе можно круче и оптимальнее, ты совершенно не учитываешь следующие вещи:
  1. выгоднее юзать специально заготовленные глобальные переменные чтобы хранить того же даммика.
  2. даммик может мешатся, толкатся, желательно создавать его в позиции цели, и убирать карту путей.
  3. не стоит ставить короткое время жизни даммикам, если они наносят урон, может случится конфуз - кто убил не известно
  4. Даммик может не видеть цель, поэтому нужно создавать даммика за врага (но в настройках способности указать цели - союзники) что катит только для спеллов не наносящих урон, или делать SharedVision.
ответ
дебагом научись пользоваться, у тебя ошибка в слове
local SpellStruct s = LoadInteger(Hash,GetHandleId(T),StringHash("Strcut"))
call SaveInteger(Hash,GetHandleId(T),StringHash("Struct"),s)

23

» WarCraft 3 / Баг в анимации Stand

Похожие вопросы:

ответ
В "графика -нужная анимация" ничего не менял?
Вполне возможно, что для этой пассиви она по дефолту стенд ченннел проигрывает или попросту добавляет тег ченнел.
ответ
Ну это смешно.
Всё дело в ОС. После того как Windows 10 build 1607 вышел из режима смены пользователя, запустил карту из этого комментария, и анимации поломались. Перезагрузил компьютер, анимации стали верными.
ответ
Получите, распишитесь.
Проблема была в том, что те две штуки, что показаны на скрине, не были прикреплены ни к какой кости. Тупо висели в воздухе проще говоря.
Анимация Stand тож сделал как надо.
ответ
Если первый кадр анимации правильный, попробуйте удалить последний кадр анимации, потом скопировать кадр в её начале (Именно через команду "Кадры" - "Копировать (Ctrl + C)" !) и вставить его в конец. То же самое проделать с другой анимацией (Stand 2). Если это не поможет, тогда надо детально смотреть саму модель, что с ней не так. И ещё советую сохранять промежуточные версии модели, чтоб можно было сделать "откат", если возникнут ошибки.
ответ
проверьте анимацию в model editor'е
если там криво, значит нужно искать кривой кадр, копировать его, удалять, и вставлять снова на то же место

23

» WarCraft 3 / Как сделать тим колор

Похожие вопросы:

ответ
советую переименовать модель\заребутить комп
текстуры стандартные юзал, я так понимаю
ответ
~8gabriel8:
Невозможно дать тимколор декорации. Можно ставить нужный тимколор в 3D-редакторе mdlvis, либо делать декорации из зданий, которым дана способность Москиты (Aloc).

23

» WarCraft 3 / Помощь

Похожие вопросы:

ответ
такое чувство будто моё сообщение проигнорили

Поменяй максимум пищи на ограничение пищи

23

» WarCraft 3 / дальность атаки

Похожие вопросы:

ответ
XGM Bot:
Похожие вопросы:

ответ
lll_Kirito_lll:
Так что за прием со сферой?
Ставишь юниту в разделе Бой - Атаки на Нет, потом делаешь две способности на базе одной из сфер (например Предмет: электрическая атака), у одной из них Включен индекс атаки - 1, у другой - 2. Добавляешь первую способность юниту в РО. Когда тебе нужно изменить дальность атаки - удаляешь ту способность сферы, которая есть у юнита и добавляешь другую. Правда при этом не будет видно иконки атаки.
ответ
  1. Способность "Склад" убирает атаку. Нужна атака - не добавляй "Склад".
  2. Без дополнительных выкрутасов - нет.
ответ
Вообще в мемхаке есть же.
Но новички в картостроительстве, большинство серверов и отчасти последний патч варкрафта в мемхак не понимают.
ответ
Морф в другого героя, можно практически без кода, про руны и морфы была статья.
Так же мемхаком можно редактировать параметры атаки.
xgm.guru/p/wc3/powerups вот линк
ответ
Если не ошибаюсь - нужно еще дистанцию получения приказа поднять

ответ
так это самый простой вариант там приказ сам отлавливать .а не замах я так к примеру написал ( но гемора с проверками будет много мне кажется )
можно еще посути менять дистанцию получение приказа на отаку менять у юнита
call SetUnitAcquireRangeBJ( gg_unit_Hblm_0000, 100.00 )
кароч сделал только до ума довести нужно но вроде все работает.
ответ
Для увеличения дальности атаки используют улучшение на основе длинностволых мушкетов. Добавить всем героям это улучшение после чего при получении предмета выставляется уровень улучшения функцией SetPlayerTechResearched
ответ
~8gabriel8:
Просто улучшение на основе Длинноствольных мушкетов Альянса.
ответ
А как эту дистанцию получения приказа настроить?
РО -> атака: дальность получения приказа в свойствах юнита.

23

» WarCraft 3 / Герой не наносит урон

Похожие вопросы:

ответ
Баг абилки
исправляется с помощью тригга - добавляем анимационный таг, счетчик для количества ударов и даем руну на морф с другим типом атаки\бонус к урону\...
само собой абилку заменяем другой, можно на основе канала
ответ
Юнит атакует, ждать время точки повреждения, потом ждать расстояние до цели атакованного юнита, деленное на скорость снаряда. Но промах учитываться не будет конечно. Можно как-то попробовать через юнит получает урон.
ответ
Сделать области (безопасные зоны).
Периодическое событие - каждую секунду.
Условие - время > 6.00 и время < 18.00.
Действие - если герой не в области 1 или герой не в области 2 и т. д., то уменьшить жизнь на 85.00.
ответ
Вот держи. За подробностями в вк можешь обратится и если такое дело помогу доработаю систему на jass ( мой вк - vk.com/id446544976 )
ответ
  1. событие урона показывает сколько нанесет урона сейчас, но урон еще не пришел. урон происходит через 0.00 сек.
  2. у вас может быть в этот момент максимальный запас здоровья (например у курицы 10 хп). А урон противника получается слишком большим.
раскрыть
  • 2.1. Манипуляциями с хп через команды типа set life of unit вы не всегда можете наперед подправлять. Тк хп может упереться в лимит запаса здоровья юнита. А получаемый урон больше чем запас, и юнит умрет.
  • 2.2. Можно сделать юнита временно неуязвимым, тогда атака не срабатывает
2.3.поэтому самое идеальное даем абилку с максимальным запасом здоровья с 999999к хп. Юнит точно не умрет от урона.
после таймера 0.00 сек убираем абилу и подправляем как надо.
ты можешь делать проверки сколько очков осталось на поглощение

Nemezid, это незаметно, тк все происходит очень быстро.

23

» WarCraft 3 / ИИ

Похожие вопросы:

ответ
вопросы типа сделайте за меня не принимаются
по поводу того как это делать написано здесь xgm.guru/p/wc3/articles
ответ
BrEd Pitt, что значит использовать
берёшь и создаёшь юнитов для резервного игрока а потом отдаёшь им приказ
ответ
Возможно listfile.txt повредился.
Перекачай его.
ответ
есть событие - юнит получает урон. в нём отслеживается как жертва, так и наносящий урон. можно хоть через хэш, хоть через структуру Юнита записывать всё, что угодно. Кто от кого конкретно сколько получил урона, кто кому сколько нанёс, сколько провисел на ком-то бафф яда и т.п. (Сначала был loop, а теперь периодический триггер). Каждые N секунд, перебираешь всех юнитов в массиве или списке, и отслеживаешь всё, что надо.
Структура - Unit. У неё есть двойной список с юнитами и уроном от яда (полученным или нанесённым - зависит от того, у кого будет этот список - у жертв или у тех, кто наносит яд). Типа DoubleList. В DoubleList есть элементы DoubleElement. В каждом таком элементе записаны unit и real (урон от яда от этого юнита). При получении урона от яда перебирается список, если юнит уже есть, урон от него (или ему) прибавляется. Если нет, то создаётся новый элемент с новым юнитом.
Периодически у нужных юнитов эти списки перебираются. Всё.
ответ
Diazon, прочти статьи по массивам/структурам
после чего юзай двухмерные массивы/поля-массивы